﻿/*****************************************************************//**
  * @file   VAOneXMLAdaptorAcousticFESubSystems.h
  * @brief  VAOne读写FE腔体子系统单元列表适配器
  *
  * @author lilongyuan (lilongyuan@diso.cn)
  * @date   2025-01-15
  *********************************************************************/
#ifndef VAONEXMLADAPTORACOUSTICFESUBSYSTEMS_H
#define VAONEXMLADAPTORACOUSTICFESUBSYSTEMS_H

#include "FITKAbstractVAOneXMLAdaptor.h"

namespace IO
{
    /**
     * @brief   VAOne读写FE腔体子系统适配器
     * @author  lilongyuan (lilongyuan@diso.cn)
     * @date    2025-01-15
     */
    class FITKVAOneXMLIOAPI VAOneXMLAdaptorAcousticFESubSystems : public FITKAbstractVAOneXMLAdaptor
    {
        FITKCLASS(IO, VAOneXMLAdaptorAcousticFESubSystems);
    public:

        /**
         * @brief   构造函数
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-15
         */
        explicit VAOneXMLAdaptorAcousticFESubSystems() = default;
        /**
         * @brief   析构函数
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-15
         */
        ~VAOneXMLAdaptorAcousticFESubSystems() = default;
        /**
         * @brief   适配器读数据
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-15
         */
        bool adaptR() override;
        /**
         * @brief   适配器写数据
         * @return  是否执行成功
         * @author  lilongyuan (lilongyuan@diso.cn)
         * @date    2025-01-15
         */
        bool adaptW() override;

    private:
        /**
         * @brief     读取AcousticFESubSystems节点数据
         * @param[i]  node AcousticFESubSystems节点
         * @return    是否执行成功
         * @author    lilongyuan (lilongyuan@diso.cn)
         * @date      2025-02-06
         */
        bool readAcousticFESubSystems(rapidxml::xml_node<char>* node);

        /**
         * @brief     读取FE声腔子系统数据
         * @param[i]  node AcousticFESubSystem节点
         * @return    是否执行成功
         * @author    lilongyuan (lilongyuan@diso.cn)
         * @date      2025-02-06
         */
        bool readAcousticFESubSystem(rapidxml::xml_node<char>* node);

        /**
         * @brief     写出AcousticFESubSystems节点数据
         * @param[i]  node AcousticFESubSystems节点
         * @return    是否执行成功
         * @author    lilongyuan (lilongyuan@diso.cn)
         * @date      2025-02-06
         */
        bool writeAcousticFESubSystems(rapidxml::xml_node<char>* node);

        /**
         * @brief     写出FE声腔子系统数据
         * @param[i]  node AcousticFESubSystem节点
         * @return    是否执行成功
         * @author    lilongyuan (lilongyuan@diso.cn)
         * @date      2025-02-06
         */
        bool writeAcousticFESubSystem(rapidxml::xml_node<char>* node);
    };
    Register2FITKIOAdaptorFactory(VAOneXML, AcousticFESubSystems, VAOneXMLAdaptorAcousticFESubSystems)
}

#endif // VAONEXMLADAPTORACOUSTICFESUBSYSTEMS_H

